/*
 * itineris.cpp
 *
 *  Created on: 3 juin 2009
 *      Author: hissel
 */

#include	<exception>
#include	<iostream>
#include	<fstream>
#include	<getopt.h>
#include	"console.h"

int main(int argc,char** argv) {
	const char* const short_options="f:";
	const struct option long_options[]= {
		{"file",1,NULL,'f'},
		{NULL,0,NULL,0}
	};
	int next_option;
	bool stop=false;	// Indique si le programme doit être fermé après l'action
	bool erreur=false;	// Indique si le programme s'est terminé par une erreur
	Application *app=new Application(argc,argv,&Console::affiche,&Console::affiche_erreur);
	try {
		do {
			next_option=getopt_long(argc,argv,short_options,long_options,NULL);
			switch (next_option) {
				case 'f':{
						ifstream script(optarg);
						openConsole(app,script);
						script.close();
						stop=true;
						break;
					 }
				case '?':{
						cout << "Syntaxe :\nitineris [-f script_file]\n";
						break;
					 }
			}
		} while (next_option!=-1);
		if (!stop) openConsole(app,cin);	// Permet à l'utilisateur de saisir des commandes supplémentaires
		delete app;
		return 0;
	} catch (exception e) {
		cerr << e.what() << endl;
		erreur=true;
	}
	delete app;
	return (erreur?1:0);
}
